可能是我的问题遇到了麻烦,我试图知道我的代码如何像这样运行......我的麻烦是什么,请帮助我这是我的代码:
string arr[3][4];
arr[1][0] = "34234";
printf("%s",arr[1][0]);
但我的输出是 %#$ (类似这样的东西)。请帮助我,非常感谢。
这是因为该函数对 C++类printf一无所知。std::string它在那里是因为它是 C 标准库的一部分。
要获得可以使用的 C 风格字符串,例如printf,您必须使用以下c_str方法:
printf("%s", arr[1][0].c_str());
但你真正应该做的是学习如何使用原生 C++ 流输出:
std::cout << arr[1][0];
PS。除了旧的 C 样式数组,您还应该查看 C++标准容器,例如std::vector和std::array。
printf是一个 C 函数,对诸如std::string. 您可以使用标头中的安全std::cout类型<iostream>:
std::cout << arr[1][0];
或者,如果您确实需要调用printf(并放弃类型安全性), call std::string::c_str(),它将 a 返回到由 aconst char*保存的以 null 结尾的字符串std::string。printf会明白这一点。
printf("%s",arr[1][0].c_str());
使用std::cout而不是printfwith std::string,因为 C 函数printf没有std::string.
#include <iostream>
std::cout << arr[1][0];
为了使您的代码正常工作,您需要通过调用std::string::c_str函数来获取 C 字符数组
printf("%s",arr[1][0].c_str());