我的问题是我在输入最后一个输入后需要转换所有输入。代码中有一个函数:你输入一个数字pocet_r,它允许你输入pocet_r字符串。所以我需要以某种方式改变它。
示例,它现在如何运作:
3 (`pocet_r`)
input
output
input
output
input
output
我希望:
3 (`pocet_r`)
input
input
input
output
output
output
我的代码,看看突出显示的循环,那就是错误:
#include<iostream>
#include<string>
#include <ctype.h>
using namespace std;
int pocet_r;
void Convert(string input){
string output = "";
string flag = "";
bool underscore = false;
bool uppercase = false;
if ( islower(input[0]) == false){
cout << "Error!" <<endl;
return;
}
for (int i=0; i < input.size(); i++){
if ( (isalpha( input[i] ) || (input[i]) == '_') == false){
cout << "Chyba!" <<endl;
return;
}
if (islower(input[i])){
if (underscore){
underscore = false;
output += toupper(input[i]);
}
else
output += input[i];
}
else if (isupper(input[i])){
if (flag == "C" || uppercase){
cout << "Chyba!"<<endl;
return;
}
flag = "Java";
output += '_';
output += tolower(input[i]);
}
else if (input[i] == '_'){
if (flag == "Java" || underscore){
cout << "Chyba!" <<endl;
return;
}
flag = "C";
underscore = true;
}
}
for (int i=input.size()-1; i >=0; i--){
if (input[i] == '_'){
if (flag == "Java" || underscore){
cout << "Chyba!" <<endl;
return;
}
flag = "C";
underscore = true;
}
}
**for (int i = 0; output[i] != '\0' ; i++){
cout << output[i] << endl; }**
}
int main(){
const int max = 100;
string input;
cin >> pocet_r;
if(pocet_r >= 1 && pocet_r <=100)
{
for (int i = 0; i <pocet_r; i++)
{
if(input.size() > max){
cout << "slovo musi mat minimalne 1 a maximalne 100 znakov" << endl;
while(input.size() > max){
**getline(cin, input);
}**
}else{
Convert (input);
}
}
}else{
cout << "Minimalne 1 a maximalne 100 uloh" << endl;
}
system("pause");
}
这段代码正在做类似的事情,当我键入数字4时,我收到四条消息说错误! ,我甚至不输入四个输入字符串......
根据LoPoBo回答
编辑}else{
for(vector<string>::iterator it = inputs.begin(); it != inputs.end(); ++it){
inputs.push_back(input);
Convert(*it);
}
}
答案 0 :(得分:1)
我没有完全理解你的代码,但是如果你想在计算输出之前读取所有输入,你可以简单地将输入存储在std :: vector中。 然后,在读取所有输入后,您可以遍历向量并进行计算,如下所示:
vector<string> inputs;
// Loop through the inputs and add them to the vector with inputs.push_back(input);
for(vector<string>::iterator it = inputs.begin(); it != inputs.end(); ++it){
Convert(*it);
}