0

可能是我的问题遇到了麻烦,我试图知道我的代码如何像这样运行......我的麻烦是什么,请帮助我这是我的代码:

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

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

4

3 回答 3

5

这是因为该函数对 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::vectorstd::array

于 2013-06-25T10:07:56.117 回答
2

printf是一个 C 函数,对诸如std::string. 您可以使用标头中的安全std::cout类型<iostream>

std::cout << arr[1][0];

或者,如果您确实需要调用printf(并放弃类型安全性), call std::string::c_str(),它将 a 返回到由 aconst char*保存的以 null 结尾的字符串std::stringprintf会明白这一点。

printf("%s",arr[1][0].c_str());
于 2013-06-25T10:11:25.850 回答
1

使用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());
于 2013-06-25T10:07:42.173 回答