A weird example of .toUTF16z concatination side-effects in wcsncat

BoQsc vaidas.boqsc at gmail.com
Thu Apr 7 12:10:33 UTC 2022


On Thursday, 7 April 2022 at 11:03:39 UTC, Tejas wrote:
> On Thursday, 7 April 2022 at 10:50:35 UTC, BoQsc wrote:
>> Here I try to concatenate three character strings using 
>> `wcsncat()`.
>>
>> [...]
>
> Maybe try using `wstring` instead of string? Also use the `w` 
> postfix
>
> ```d
> wstring dlang_string = "BBBBBBBBBBB"w;
>
> I can't test because I'm not on my PC and I don't use Windows

Exactly same results. `AAAAAAAAAABBBBBBBBBBBBBBBBBBBB`

```
import std.stdio;

@system void main(){

	import std.utf                : toUTF16z, toUTF16;
	import core.stdc.wchar_       : wcsncat, wcslen, wprintf;
	import core.stdc.stdlib       : wchar_t;
	import core.sys.windows.winnt : LPCWSTR;

	wchar_t*  clang_string         = cast(wchar_t *)"AAAAAAAAAA";
	wstring   dlang_string         = "BBBBBBBBBBB"w; //<---- NEW, 
same results
	LPCWSTR   winpointer_to_string = "CCCCCCCCCC";
	
	wcsncat(clang_string, dlang_string.toUTF16z, 
wcslen(dlang_string.toUTF16z));
	//   String output: AAAAAAAAAABBBBBBBBBBB
	
	wcsncat(clang_string, winpointer_to_string, 
wcslen(winpointer_to_string));
	//   String output: AAAAAAAAAABBBBBBBBBBBBBBBBBBBB
	// Expected string: AAAAAAAAAABBBBBBBBBBBCCCCCCCCCC

	wprintf(clang_string);
	//   String output: AAAAAAAAAABBBBBBBBBBBBBBBBBBBB
	// Expected string: AAAAAAAAAABBBBBBBBBBBCCCCCCCCCC

}
```


More information about the Digitalmars-d-learn mailing list