在 C++ 中用大写字符替换整个字符串

Replacing entire string with uppercase Character in C++

我正在寻求有关替换整个字符串中的字符的帮助。我正在寻找用大写字母 X 替换字符串中的所有字符。我尝试实现循环范围,但是 Microsoft Visual C++ 2010 似乎不支持它,因为我遇到了错误。所以我决定使用标准的 for 循环,我还尝试使用我认为将内置在字符串函数库中的替换字符串函数。但是,我收到错误。我将不胜感激任何帮助。谢谢

#include<iostream>
#include<string>
using namespace std;
int main(){
const char ch = 'X';
char Char1;
string str = {"This is my Book"};

string::size_type n;
for(n = 0; n < str.size(); ++n){ 
    if(str[n] == Char1)
        str[n] = ch;
    cout<< str << endl;

return 0;

}

据我了解,您想用 X 替换每个字符。 字符串完全由字符组成,因此您的问题没有多大意义。我假设你的意思是你想用 X 替换所有字母(小写和大写)。

你的for循环可以改写成这样:

for (int n = 0; n < str.size(); ++
    if (((str[n] < 91) && (str[n] > 64)) || ((str[n] < 123) && (str[n] > 96)))
          str[n] = 'X';

与91、64、123、96的比较对应大小写字母ASCII值的上下限。

PS:如果你不是别的意思,请告诉我,我会相应地修改答案。

一般来说,我收到错误 描述性不强,并且您的代码缩进得非常厉害。然而,错误在这里:

string str = {"This is my Book"};

你的意思可能是:

string str {"This is my Book"};

前者创建一个初始化列表并尝试将其分配给str;后者只是用给定的参数构造一个字符串。

然而,VS 2010 不支持初始化列表,所以你需要这样做:

string str("This is my Book");

此外,您的 for 循环中有一个多余的左大括号,它与右大括号永远不匹配。

另一个问题:Char1 从未被初始化,所以它可以容纳任何东西。它在当前上下文中似乎也毫无用处。

您的 for 循环也最好使用 STL 迭代器来完成:

for (string::iterator it = str.begin(); it != str.end(); ++it)
    *it = ch;

您的固定密码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    const char ch = 'X';
    string str("This is my Book");

    for (string::iterator it = str.begin(); it != str.end(); ++it)
        // for each character in str, set it to ch
        *it = ch;
    cout << str << endl;

    return 0;
}

如果您只想替换字母,请执行以下操作:

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main() {
    const char ch = 'X';
    string str("This is my Book");

    for (string::iterator it = str.begin(); it != str.end(); ++it)
        if (isalpha(*it)) // make sure we're replacing a letter
            *it = ch;
    cout << str << endl;

    return 0;
}

但是,由于您只是填充一个字符串,所以有更好的方法:

#include <iostream>
#include <string>

using namespace std;

int main() {
    const char ch = 'X';
    string str("This is my Book");

    str = string(str.size(), 'X');
    // This is a version of the std::string constructor that takes
    // a number (N) and a character and duplicates the character N
    // times.
    cout << str << endl;

    return 0;
}

或者,更好的是,使用 lambda 和 for_each:

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    const char ch = 'X';
    string str("This is my Book");

    // for_each takes an iterator to the start and end of any STL
    // container. It then calls the given function on each element in 
    // the iterator. This lambda replaces the character with ch.
    for_each(str.begin(), str.end(), [](char& c) { c = ch; });
    cout << str << endl;

    return 0;
}