C++ 从控制台读入文本/字符串,直到遇到*为止
所以我得到的问题/练习是: “输入是文本。编写一个程序修改输入的文本,以便删除所有元音。文本的结尾用*”这是我的英文翻译,可能不是100%准确 但是,当遇到*时,我应该如何停止输入?如果我必须首先存储值,我不能在执行过程中检查每个字符 可能是我没有很好地解释这个问题,但在解决方案中可以清楚地看到,输入的字符串在一行中,并且它在*之后结束读取值 这样做是否可行,或者如果我删除了在*之后输入的所有内容,是否允许这样做C++ 从控制台读入文本/字符串,直到遇到*为止,c++,string,C++,String,所以我得到的问题/练习是: “输入是文本。编写一个程序修改输入的文本,以便删除所有元音。文本的结尾用*”这是我的英文翻译,可能不是100%准确 但是,当遇到*时,我应该如何停止输入?如果我必须首先存储值,我不能在执行过程中检查每个字符 可能是我没有很好地解释这个问题,但在解决方案中可以清楚地看到,输入的字符串在一行中,并且它在*之后结束读取值 这样做是否可行,或者如果我删除了在*之后输入的所有内容,是否允许这样做 还提供了C++中的实现,因为我必须使用它来进行考试。 (是的,我知道如何去掉元音)
还提供了C++中的实现,因为我必须使用它来进行考试。 (是的,我知道如何去掉元音)
以下是我的解决方案,它只删除“*”之后的所有内容:#include <iostream>
#include <string.h>
using namespace std;
char samoglasnici[5] = {'a','e','i','o','u'}; // samoglasnici == vowels
string obrisiSamoglasnike(string tekst) // obrisiSamoglasnike == deleteVowels
{
for(int i = 0; i<tekst.length(); i++)
{
for(int j = 0; j<5; j++)
{
if(tekst[i]==samoglasnici[j])
tekst[i] = ' ';
}
}
return tekst;
}
int main()
{
cout << "Unesi neki tekst: " << endl; // enter some text
string tekst;
getline(cin, tekst);
tekst = tekst.substr(0,tekst.find('*') + 1);
cout << obrisiSamoglasnike(tekst);
return 0;
}
#包括
#包括
使用名称空间std;
char samoglasnici[5]={'a','e','i','o','u'};//samoglasnici==元音
字符串obrisiSamoglasnike(string tekst)//obrisiSamoglasnike==删除元音
{
对于(inti=0;i为了好玩,这里有一个稠密的版本。除了故意稠密之外,还告诉你如何
- 通过在流缓冲区迭代器上操作来避免流处理
- 避免存储临时缓冲区(这意味着如果输入为几GB,则解决方案将扩展)
- 如何在实现“copy\u if”的同一循环中使用
*
作为循环结束条件
#包括
#包括
#包括
int main(){
使用名称空间std;
ostreambuf_迭代器输出(cout);
for(istreambuf_迭代器f(cin),l;f!=l;++f)
开关(*f){
大小写“*”:返回0;
案例“a”:案例“e”:案例“i”:案例“o”:案例“u”:继续;
默认值:*out++=*f;
}
}
免责声明:代码仅供参考,您的教授无论如何都不会接受
“在C++中也提供了一个实现”啊,你在那里失去了我。我不喜欢提供一个解决方案,抱歉,只是一个C++的提示。我想如果你努力了,你会在这里得到很好的答案,然后清楚地描述你被卡在哪里。如果你还没有编写任何代码,C++中的一个好提示就是“<代码> int main < /C>”。-但你可能已经过了,对吧?我已经用另一种方法解决了,我得到了字符串,然后删除了*.之后的所有内容。我会提供它。变量也是用我的语言的,对不起。
#include <iostream>
#include <iterator>
#include <algorithm>
int main() {
using namespace std;
ostreambuf_iterator<char> out(cout);
for(istreambuf_iterator<char> f(cin), l; f!=l; ++f)
switch(*f) {
case '*': return 0;
case 'a': case 'e': case 'i': case 'o': case 'u': continue;
default: *out++ = *f;
}
}