读取一行字符串并以大写输出
#include<iostream>#include<string>
#include<vector>
using namespace std;
int main(){
vector<string> a;
string b;
cout << "输入字符串:";
while (getline(cin,b))//问题出在这一行,如果换成getline(cin,b),初步满足要求,但是未去除空格;使用while时,程序没有响应
a.push_back(b);
for (auto it = a.begin(); it != a.end() && !it->empty(); it++){ //it为一个迭代器,遍历全部字符串,遇空串停止循环
for (auto it2 = it->begin(); it2 != it->end(); it2++) //利用迭代器遍历当前字符串
*it2 = toupper(*it2); //改写成大写形式
cout << *it << endl;
}
system("pause");
return 0;
} 继续求助 一般来说,"一行"的意思是只要cin>>b;就好。
我看楼主的意思"一行"是非得换行符分割的一行,而且还要把“一行”中所有的空格都去掉,是这样么?
这样的话直接检查一遍就好了 auto it = b.begin();
while (it != b.end()) {
if (*it <= 32) it = b.erase(it);//去掉所有不可打印字符和空格
else it++;
} Croper 发表于 2019-3-30 14:39
一般来说,"一行"的意思是只要cin>>b;就好。
我看楼主的意思"一行"是非得换行符分割的一行,而且还要把“ ...
是这样的,比方说我想输入:wang er xiaoshi da yingxiong(此时在控制台按回车)
希望得到这样的结果:WANGERXIAOSHIDAYINGXIONG
就是说能够略掉空格并以大写输出。
第一次用:cin>>b;输出的就只有WANG
第二次用:getline(cin,b);全部转成了大写,但是空格都在
第三次尝试:while(getline(cin,b));输入后控制台无反应。
这是C++primer 第五版的练习3.22
答案看全成么这样的话直接检查一遍就好了
auto it = b.begin();
while (it != b.end()) {
if (*it <= 32) it = b.erase(it);//去掉所有不可打印字符和空格
else it++;
} Croper 发表于 2019-3-30 16:04
答案看全成么
能在我的源码基础上改么,您的这串代码放进去,也没有反应。。{:5_100:}最好能给一个整个代码。。。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main() {
vector<string> a;
string b;
cout << "输入字符串:";
getline(cin, b);//这儿直接getline
////////////////////////////////////////////////////////////////////////
auto it = b.begin();
while (it != b.end()) {
if (*it <= 32) it = b.erase(it);//去掉所有不可打印字符和空格
else it++;
}
/////////////////////////////////////////////////////////////////
a.push_back(b);
for (auto it = a.begin(); it != a.end() && !it->empty(); it++) {
for (auto it2 = it->begin(); it2 != it->end(); it2++)
*it2 = toupper(*it2);
cout << *it << endl;
}
system("pause");
return 0;
} Croper 发表于 2019-3-31 16:31
谢谢大佬,另外想问一下,为什么是<=32?
这个用法没有见过 18689979153 发表于 2019-3-31 20:42
谢谢大佬,另外想问一下,为什么是
因为31及之前的是不可打印字符,32是空格
去查查ascii码表就知道了 Croper 发表于 2019-3-31 21:13
因为31及之前的是不可打印字符,32是空格
去查查ascii码表就知道了
嗯 已经看到了非常感谢
页:
[1]