2013-06-01 174 views
1

我有这个公共函数在一个类中,我正在做的是将字符串附加到另一个字符串字符char(因为我还对字符进行了一些检查)。因此,它基本上是这样的:将字符串添加到字符串会导致C++崩溃

void mystring::copy(wstring oldtext) { 
    wstring newtext; 
    for (unsigned int i=0; i<oldtext.length(); ++i) { 
     // Doing some checking ... 
     // I also used newtext.append(1, oldtext[i]); 
     newtext += oldtext[i]; 
     // Just testing 
     wprintf_s(L"String: %s\n", newtext); 
    } 
} 

所以,如果我评论了wprintf_s行程序不会崩溃,但如果我想测试,看看被添加到newtext通过使用它,它崩溃。我试图添加"\0\n",但它不起作用,它闻起来像一些指针问题。会是什么呢?

+4

您正在将一个类对象传递给可变参数C函数('wprintf_s');这不是一个好主意。 –

+0

这只是为了测试。我将删除它。也许我应该使用另一个函数,然后 – ali

+1

@ali,'std :: wcout <<“String:”<< newtext <<“\ n”;' – chris

回答

5

我想你应该使用newtext.c_str()将它转换为一个正常的C字符串,当它与%s类型说明符在printf内使用。