我需要找到位置1 2 3 4 5 6 7 8 9 10,它们存储为一个名为' line'的字符串。并保留一个名为' info'的字符串向量。但我的代码在代码中没有任何错误?
string line;
vector<vector<string>>info;
for (int x = 0; x < info.size(); x++)
{
for (int y = 0; y < info[x].size(); y++)
{
for (int i = 0; i <= 10; i++)
{
if (info[x][y] == i)
{
cout << "row " << x;
cout << "column " << y;
}
}
}
}
还是更快的替代方法? 告诉我你的代码因为我是编程的新手,很难理解你的解释,谢谢。
答案 0 :(得分:1)
您正在将int
与string
进行比较,但不会进行同等比较。你必须将一个转换为另一个
// compare them as strings
if (info[x][y] == std::to_string(i))
或
// compare them as ints
if (std::stoi(info[x][y]) == i)
答案 1 :(得分:1)
我正在解释你的问题意味着你正在寻找字符串中的数字0到9,例如“abc012efg”。在那种情况下:
for (int i = 0; i <= 10; i++)
{
if (info[x][y] == i)
不幸的是,这个字符串中的字符'0'不是整数0.它是'0',它是ASCII 48,你搜索的字符串不是字符'0'到'9',但对于八位字节0到9,不一样。
这里的第二个错误是你也在搜索数字0到10,而不是0到9.上面的代码片段应该是:
for (int i = 0; i < 10; i++)
{
if (info[x][y] == '0' + i)