C 打印从字符串转换的向量的内容
C++ printing the contents of a vector converted from a string
我遇到了一些问题,弄清楚为什么这不会打印向量的元素(我是通过从输入字符串转换内容来创建的)
#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行正确打印到控制台。
然而,对于相同的代码第19和20行打印:"495051"
我会做什么错?
我真的很感谢它的帮助。
执行此操作时:
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矢量。
看起来您正在从字符串中构造int的向量。矢量存储在intupline中的ASCII等效。" 49 50 51"是您输入的ASCII值" 1 2 3"
以下代码应起作用,在使用char的向量而不是int。
的情况下vector<char> intvect(inputline.begin(), inputline.end());
for (vector<char>::const_iterator iter= intvect.begin(); iter!= intvect.end(); ++iter)
cout << *iter << endl;
}
相关文章:
- 将CHW格式的浮点向量转换为cv::Mat
- 将元组的向量转换/构造为堆
- 将编译时常量向量转换为堆分配版本
- 在 Cython 中将C++向量转换为 numpy 数组,而无需复制
- 在<uint8_t> <char> c++ 中将常量向量转换为常量向量
- C++ 将地址保存为字符串的向量转换为新的向量
- 如何使用 STL 算法将整数向量转换为字符串向量?
- 在 c++ 中将集合转换为向量和向量转换为字符串时出现运行时异常
- 如何使用istream_iterator将无符号字符向量转换为字符串?
- 如何在 c++ 中将向量转换为<string>常量字符* const*?
- 将字符向量转换为单个字符串
- <int> 使用 fmt 库将向量转换为字符串
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 在C++中将字符向量转换为字符串向量
- 避免从单一元素向量转换为基元类型
- 无法从向量<T>转换为 T
- 将浮点数向量转换为十六进制/二进制字符串
- 虚拟地将结构向量转换为结构成员的向量
- 将整数向量转换为字节数组向量,然后调用每个字节数组
- 如何从向量转换为<char>数字整数