我正在尝试使用迭代器更改字符串中的字符。它会更改空格之前的字符,但会删除该空格之后的字符。
怎么了?
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cout<<"Enter a string : ";
cin>>s;
for (auto it = s.begin(); it != s.end() && !isspace(*it);++it)
*it = toupper(*it);
cout<<s; // capitalize the current character
return 0;
}
输出:
Enter a string : abc abc
ABC
最佳答案
for语句中的条件不正确
for (auto it = s.begin(); it != s.end() && !isspace(*it);++it)
*it = toupper(*it);
当遇到空白时,循环停止迭代。
您应该在循环体内的 if 语句中移动第二个子表达式。例如
for (auto it = s.begin(); it != s.end();++it)
if ( !isspace( ( unsigned char )*it) ) *it = toupper( ( unsigned char )*it);
而不是语句
cin>>s;
使用
std::getline( std::cin, s );
关于c++ - 如何使用迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58504673/