我在这里写了一段代码来理解一个问题。该程序应该询问您要在一个名为vNumbers的向量中存储多少个数字,然后继续创建一个iNumbers长度的向量(您已经选择的迭代次数)。然后,您将输入您的第一个数字,该数字将被推回到vNumbers中,然后询问您希望将多少个字母放入(存储在每个数字中)将存储在矢量vLetters中。之后它应该打印出vNumbers和vLetters中的内容。我可以让程序接受1个字母的1个数字,但我不能让它有1个数字的多个字母。例如,如果我这样做
请输入您要添加的号码数量:
2
请输入#1
100
您想添加多少个字母(数字100)
2
请输入一封信
A
请输入一封信
乙
请输入#2
200
您想添加多少个字母(数字200)
1
请输入一封信
C
我应该得到这个
您已输入:
100 A B
200 C
相反,我得到的是这个,我不知道为什么。
100 AB
200 ABC
#include <iostream>
#include <string>
#include <cctype>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string sLetters, sLettersB, sLettersC, sLettersA, sNumbers;
vector<string> vLetters, vNumbers;
int iLetters, iNumbers;
cout << "how many NUMBERS would you like to add? ";
cin >> iNumbers;
cin.ignore();
for (int j = 0; j < iNumbers; j++)
{
cout << j + 1 << "# Enter number ";
getline(cin, sNumbers);
vNumbers.push_back(sNumbers);
cout << "how many LETTERS would you like to add to " << j + 1 << "#? ";
cin >> iLetters;
cin.ignore();
for (int i = 0; i < iLetters; i++)
{
cout << "Enter letter";
getline(cin, sLettersA);
sLetters += sLettersA;
}
vLetters.push_back(sLetters); // How ever many letters are in sLetters should be added to n-1 index # in vector vLetters
}
for (int x = 0; x < vLetters.size(); x++)
{
cout << vNumbers[x] << "\t \t" << vLetters[x] << endl;
}
return 0;
}
答案 0 :(得分:1)
问题是,在&#34;条目&#34;的迭代之间没有清除sLetters。循环(这就是为什么你第二次得到&#34; ABC&#34;(&#39; AB&#39;是从第一次迭代中遗留下来并保留在sLetters中直到删除)。
但是 - 正如上面的评论所表明的那样,结构/关系存在其他问题。
答案 1 :(得分:1)
您的代码有错误。请参阅下面的评论
for (int i = 0; i < iLetters; i++)
{
cout << "Enter letter";
getline(cin, sLettersA);
sLetters += sLettersA; // sLetters is defined outside for loop and no space
}
因此,您可以在第一个for循环中定义sLetters
或使用clear()
sLetters.clear();
for (int i = 0; i < iLetters; i++)
{
cout << "Enter letter";
getline(cin, sLettersA);
sLetters += ' ' + sLettersA;
}
或从第3行删除sLetters
,稍后再定义
string sLetters;
for (int i = 0; i < iLetters; i++)
{
cout << "Enter letter";
getline(cin, sLettersA);
sLetters += ' ' + sLettersA;
}