可能是我的问题遇到了麻烦,我试图知道我的代码如何像这样运行......我的麻烦是什么,请帮助我这是我的代码:
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
而不是printf
with 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());