我遇到一些问题,弄清楚为什么这不会打印我的矢量元素(我通过转换输入字符串中的内容来创建)
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <cctype>
#include <complex>
using namespace std;
int main() {
//produce inputline string
string inputline;
cout << "Enter Input line" << endl;
getline(cin, inputline);
//strip inputline of whitespace
inputline.erase(
remove(inputline.begin(), inputline.end(), ' '),
inputline.end());
cout << inputline << endl;
vector<int> intvect(inputline.begin(), inputline.end());
for (vector<int>::const_iterator iter= intvect.begin(); iter!= intvect.end(); ++iter)
cout << *iter << endl;
}
如果我输入“1 2 3”,第17行正确地将“123”打印到控制台。
然而,对于相同的代码行19和20打印: “ 49 50 51 “
我可能做错了什么?
我真的很感激这方面的帮助。
答案 0 :(得分:2)
执行此操作时:
vector<int> intvect(inputline.begin(), inputline.end());
逐个读取字符,其ASCII值存储在intvect
中。 ASCII值1为49,2为50,依此类推。这就是你所看到的输出。
如果您将vector<int>
转换为vector<char>
,您将能够成功读取单个数字,但不能读取多位数字。例如。如果您输入11 12 13,它会将其视为1 1 1 2 1 3.
您必须使用空格作为分隔符来分隔数字,然后将它们转换为整数并将它们提供给int向量。
答案 1 :(得分:0)
看起来你正在从一个字符串构造一个INT向量。 Vector在输入行中存储ASCII等效字符。 &#34; 49 50 51&#34;是输入的ASCII值&#34; 1 2 3&#34;
下面的代码应该可以使用,其中使用了Vector of Char而不是INT。
vector<char> intvect(inputline.begin(), inputline.end());
for (vector<char>::const_iterator iter= intvect.begin(); iter!= intvect.end(); ++iter)
cout << *iter << endl;
}