可能是我的问题出了问题,我试着知道我的代码怎么能这样运行......我有什么麻烦,请帮助我 这是我的代码:
string arr[3][4];
arr[1][0] = "34234";
printf("%s",arr[1][0]);
但我的输出是%#$(类似这样)。请帮帮我,非常感谢你。
答案 0 :(得分:5)
这是因为printf
函数对C ++ std::string
类一无所知。它就在那里,因为它是C标准库的一部分。
获取可用于例如C风格的C字符串printf
您必须使用c_str
方法:
printf("%s", arr[1][0].c_str());
但真正应该做的是学习如何使用本机C ++流输出:
std::cout << arr[1][0];
PS。
您还应该查看C ++ standard containers,而不是旧的C风格数组,例如std::vector
和std::array
。
答案 1 :(得分:2)
printf
是一个C函数,对std::string
等类型一无所知。您可以使用std::cout
标题中的安全<iostream>
类型:
std::cout << arr[1][0];
或者,如果确实需要调用printf
(并放弃类型安全性),请调用std::string::c_str()
,它会将const char*
返回null由std::string
持有的终止字符串。 printf
会理解这一点。
printf("%s",arr[1][0].c_str());
答案 2 :(得分:1)
使用std::cout
代替printf
std::string
,因为C函数printf
没有std::string
的视图。
#include <iostream>
std::cout << arr[1][0];
要使代码正常工作,您需要通过调用std::string::c_str函数
来获取C char数组printf("%s",arr[1][0].c_str());