我试图从字符串中读取字符(数字),然后将它们作为整数传递给向量。目前是这样的:
int p;
std::string line = "1111222111"
std::vector<int> vec;
for(int i = 0; i < str.size(); i++)
{
if(line.find('0', static_cast<std::size_t>(i)) != line.npos)
p = 0;
else if(line.find('1', static_cast<std::size_t>(i)) != line.npos)
p = 1;
else if(line.find('2', static_cast<std::size_t>(i)) != line.npos)
p = 2;
vec.push_back(p);
}
执行此操作时,向量仅以0结尾。请记住,这是不实际代码,只是我遇到问题的部分的模糊表示。我认为我必须在line.find中做错事,但我真的不知道如何使用它(不是我真的知道如何真正使用它......)。先谢谢你们!
答案 0 :(得分:2)
#include <vector>
#include <string>
int main(int argc, char *argv[])
{
std::vector<int> ans;
const std::string str = "1234";
for (int i = 0; i < str.size(); ++i) {
if ('0' <= str[i] && str[i] <= '9')
ans.push_back(str[i] - '0');
}
return 0;
}
答案 1 :(得分:2)
您可以使用isdigit
函数来确定该字符是否为数字。如果是这样,您可以利用ASCII命令相邻数字的事实。
您可以使用以下代码解决问题:
for(int i = 0; i < str.size(); i++) {
int c = str[i]-'0';
if(c >= 0 && c <= 9) {
vec.push_back(c);
}
}
答案 2 :(得分:1)
我认为你应该改为:
for(int i = 0; i < str.size(); i++)
有这个:
for(int i = 0; i < line.size(); i++)
您的示例中未定义 str
。我认为你的意思是line
。