【发布时间】:2020-07-10 09:39:32
【问题描述】:
这里我有一个 char 的二维向量 -
std::vector<std::vector<char>> solution = {
{"O","1"},
{"T","0"},
{"W","9"},
{"E","5"},
{"N","4"}
};
从第一列打印任何内容 - 打印正常。
cout << "In main - " << solution [ 1 ] [ 0 ]; // Prints T
但是当我尝试访问第二列的元素时。
cout << "In main - " << solution [ 1 ] [ 1 ]; // Prints blank space - I can't seem to understand why's the case.
经过安静的搜索后,我尝试在每个元素周围加上单引号。
std::vector<std::vector<char>> solution = {
{'O','1'},
{'T','0'},
{'W','9'},
{'E','5'},
{'N','4'}
};
在这种情况下可以正常工作。
cout << "In main - " << solution [ 1 ] [ 1 ]; // Gives me 0 in this case.
现在为什么我在访问"" double quotes 场景中的第二列时会出现空格。
【问题讨论】:
-
这能回答你的问题吗? Constructing a vector<int> with 2 string literals TL;DR 第一个程序有 UB,所以它可能会给出任何结果。
-
我看到它与我的问题有关,但没有解释或我不明白。什么是“TL:DR,UB”?我没有基于范围的循环,第二件事是它只发生在这个字符串和另一个字符串上,所有其他字符串都可以正常工作。在 10 个测试用例中只有 2 个失败,它们在打印无效字符或空格时都有相同的问题。
-
对不起,TL;DR 的意思是“太长,没读过”。我在下面添加了一个答案,也解释了 UB。
标签: c++ c++11 stdvector stdstring