2

什么是最好的连接方式?

const char * s1= "\nInit() failed: ";
const char * s2 = "\n";
char buf[100];
strcpy(buf, s1);
strcat(buf, initError);
strcat(buf, s2);
wprintf(buf);

它给出了错误。正确的方法应该是什么?

谢谢。

4

2 回答 2

2

我认为正确的方法是:

std::string msg = std::string("Init() Failed ") + initError + "\n";
std::cout<<msg;

或者

std::cout<<"Init() Failed "<<initError<<"\n";
于 2011-04-05T13:54:46.540 回答
1

您的大问题是您正在混合数据类型。使用其中一个char和关联的函数或wchar和关联的函数。如果您需要混合它们,请使用转换功能。这比尝试将浮点数传递给需要字符串的函数没有意义。(编译器应该能够捕捉到这两个问题,因为 的声明wprintf类似于int wprintf(const wchar_t *, ...)。)

另一个更次要的问题是,printf这样的函数不是打印一般字符串的正确函数,因为如果字符串中有任何百分号,您将获得未定义的行为。使用printf("%s",...)puts(...)或相关的功能。

而且,由于这是 C++,所以最好使用std::string该类。它并不完美,但比 C 风格的字符串要好得多。

此外,告诉我们错误是什么会有所帮助。您甚至没有告诉我们这是编译器错误还是运行时错误。

于 2011-04-05T14:27:14.320 回答