如何在 C++ 中使用 scanf() 读取字符串?
我可以使用 std::cin
读取字符串,但我不知道如何使用 withscanf() 读取字符串。如何更改下面的代码以使用 scanf() ?
string s[20][5];
for (int i=1;i<=10;i++)
{
for (int j=1;j<=3;j++)
{
cin>>s[i][j];
}
}
I can read a string with std::cin
but I don't know how to read with one withscanf(). How can I change the code below to use scanf() ?
string s[20][5];
for (int i=1;i<=10;i++)
{
for (int j=1;j<=3;j++)
{
cin>>s[i][j];
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 C
scanf()
函数需要使用 C 字符串。此示例使用临时 C 字符串tmp
,然后将数据复制到目标std::string
。Using the C
scanf()
function requires using C strings. This example uses a temporary C stringtmp
, then copies the data into the destinationstd::string
.你不能,至少不能直接。
scanf()
函数是一个 C 函数,它不知道std::string
(或类),除非您包含 .You can't, at least not directly. The
scanf()
function is a C function, it does not know aboutstd::string
(or classes) unless you include .不知道为什么需要使用 scanf,Greg 已经介绍了如何使用。但是,您可以使用向量而不是常规字符串数组。
下面是一个使用向量的示例,该向量也使用 scanf(带有基于 C++0x 范围的 for 循环):
但是,假设您希望根据用户的输入按顺序填充所有元素,这与您的示例不同。
另外, getline(cin, some_string) 通常比 cin 好很多 >>>或 scanf(),具体取决于您想要执行的操作。
Not sure why you need to use scanf and Greg already covered how. But, you could make use of vector instead of a regular string array.
Here's an example of using a vector that also uses scanf (with C++0x range-based for loops):
But, that assumes you want to fill in all elements in order from input from the user, which is different than your example.
Also, getline(cin, some_string) if often a lot nicer than cin >> or scanf(), depending on what you want to do.