如何访问C (向量)中的某些元素
How to access certain elements in C++ (in vector)
我是C 的新手,并且正在尝试创建一个询问用户个人问题的程序。
std::vector<std::string> name, age, favsinger;
std::cout << "Hello, what is your Name Age Favorite_Singer? ";
std::cin << name;
std::cin << age;
std::cin << favsinger;
int n;
std::cout << "How many siblings do you have? ";
std::cin << n;
for (int a=0;a<n;a++){
std::cout << "Please enter Name Age Favorite_Singer for sibling #" << a << ": ";
std::string a, b, c;
std::cin >> a;
std::cin >> b;
std::cin >> c; //this part throws me off because favorite singer has a first_name SPACE last_name
name.push_back(a);
age.push_back(b);
favsinger.push_back(c);
}
假设用户输入了带有信息的" 3"兄弟姐妹:
Michael 24 Madonna
Sam 20 Michael Jackson
Anna 18 None
我希望能够访问每个兄弟姐妹的喜好,无论是他们的名字,年龄还是喜欢的歌手。
我尝试做
age[1]
,但是如果我做
favsinger[1]
由于空间而被扔掉。
首先,您应该使用getline,将整个输入线作为字符串:
std::string input_line;
std::getline(std::cin, input_line);
现在您需要解析字符串。也就是说,您需要单独查看字符,并根据其值,将字符串分解为较小的组件并将其存储在需要的位置。解析是一个复杂的主题,其实施在情况下有所不同。标准库提供了一些基本的解析功能,如果您可以同意以下限制,则可以使用标准库功能非常轻松地执行此操作:
- 名称是1个字
- 年龄是1个字
- 最喜欢的歌手是线上留下的任何东西
鉴于这些限制,我们可以对input_line
进行解析:
std::istringstream iss(input_line);
std::string name, age, favsinger;
iss >> name >> age;
std::getline(iss, favsinger);
如果您不熟悉istringstream
,则在<sstream>
标头中。http://en.cppreference.com/w/cpp/io/basic_istringstream
相关文章:
- 使用不带参数的函数访问结构元素
- 我想访问std::unique_ptr中的一个特定元素
- 访问类lintalizer列表中的结构元素
- 从C++中的对列表中访问特定元素
- 访问动态分配列表中的元素
- 如何从静态向量访问类元素?
- 以C++访问矢量中的地图元素
- 访问要输出的矢量迭代器元素
- 使用 map.end() 访问 map 的最后一个元素
- OpenCV C++:当垫子类型未知时无法访问垫子元素?
- 循环访问还包含未使用元素的字符串数组
- 如何访问宏中定义的数组元素
- 是否需要 mutex() 来安全地同时访问具有 2 个线程的数组的不同元素?
- igraph(c)对邻接列表的每个元素的访问
- 容器的元素如何访问其容器的"owner"?
- QML元素ID访问从C 访问
- 对齐对数组元素的访问
- 矢量元素的访问性能如何
- 对结构元素的访问.有没有可能像矢量一样访问
- Lua c++ userdata矩阵对元素的访问