我正在尝试创建一个字符数组,然后使用cin.getline()来存储来自多个行的用户的输入。
我知道我可以使用向量和字符串类轻松地完成此操作,但我需要使用C风格来完成。
int main (){
int size;
cout << "Please enter how many character you want to type: ";
cin >> size;
cin.ignore();
char array[size];
while (cin.getline(array,size))
{
cin.getline(array,size);
}
cout << array;
}
即使用户点击进入以及如何让用户随时停止迭代,我也无法弄清楚如何继续进行迭代。
这就是我使用向量和字符串
来解决它的方法while ( getline (cin,input) ) {
if ( input == "quit" ) {
break;
}
container.push_back( input );
}
我仍然需要像上面提到的那样去做。任何提示都将受到高度赞赏
编辑:
我希望我的程序像我使用不同的库编写的那样执行,这在此任务中是不允许的。
从键盘/文件中读取文本。按字母顺序排序每一行。将它们打印在屏幕上并保存在文件中。
我之前完成的完整程序:
使用namespace std;
class text_handling { 公共:
void keyboard_input (){
string input;
vector< string > container;
vector< int > int_container;
cout << "Pleas enter your text, Enter \"quit\" to exit: \n" ;
while ( getline (cin,input) ) {
if ( input == "quit" ) {
break;
}
container.push_back( input );
}
cout << "#####################################"<<endl ;
cout << "\nOriginal order of the text:"<<endl ;
for_each( container.begin(), container.end(), [](const string& s) { cout << s << endl; } );
sort( container.begin(), container.end() );
cout << "#####################################"<<endl ;
cout << "\nSorted order of the text:" << endl;
for_each( container.begin(), container.end(), [](const string& s) { cout << s << endl; } );
ofstream output_file("./example.txt");
ostream_iterator<string> output_iterator(output_file, "\n");
copy(container.begin(), container.end(), output_iterator);
cout << "#####################################"<<endl ;
cout << "Your file has been updated" << endl;
}
void file_input (){
ifstream output_file("./example.txt");
vector<string> container;
string input;
while(getline (output_file,input)){
container.push_back(input);
}
for_each( container.begin(), container.end(), [](const string& s) { cout << s << endl; } );
}
}; int main(){
text_handling obj;
int x;
cout << "Please enter 1 if you want to write text using keyboard , Press any key to load text from file" << endl;
cin >> x;
if (x==1){
obj.keyboard_input();
}
else{
int start_s=clock();
obj.file_input();
int stop_s=clock();
cout << "time: " << (stop_s-start_s)/double(CLOCKS_PER_SEC)*1000 << endl;
}
}
我需要做同样的事情,但不使用矢量或字符串或算法类。只是c风格。
我的想法是创建一个char数组并使用cin.getline()
来读取用户输入的所有行。然后尝试循环遍历它们并以某种方式对它们进行排序并存储它们。正如你在上面的问题中看到的那样,我陷入了第一步的困境