如何将变量赋给字符串数组的元素

时间:2013-06-25 10:06:17

标签: c++ arrays string

可能是我的问题出了问题,我试着知道我的代码怎么能这样运行......我有什么麻烦,请帮助我  这是我的代码:

string arr[3][4];
arr[1][0] = "34234";
printf("%s",arr[1][0]);

但我的输出是%#$(类似这样)。请帮帮我,非常感谢你。

3 个答案:

答案 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::vectorstd::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());