Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数,该函数接受字符串参数并将其反转为C++;_C++ - Fatal编程技术网

C++ 函数,该函数接受字符串参数并将其反转为C++;

C++ 函数,该函数接受字符串参数并将其反转为C++;,c++,C++,我想创建一个函数,它接受字符串参数,将其反转并返回反转后的字符串。已经有了一些答案,但没有一个是完全有效的。 这是我的密码: #include <iostream> #include <string> using namespace std; string revStr(string word){ string reversed = ""; if(word.size() == 0) { return reversed;

我想创建一个函数,它接受字符串参数,将其反转并返回反转后的字符串。已经有了一些答案,但没有一个是完全有效的。 这是我的密码:

#include <iostream>
#include <string>

using namespace std;


string revStr(string word){

    string reversed = "";

    if(word.size() == 0)
    {
        return reversed;
    }

    for (int i = word.length()-1; i>=0; i--){
        reversed = reversed+word[i];
    }

    return reversed;
}

int main(){
string strin;
cout << "enter string;" << endl;
cin>> strin;
cout << revStr(strin);
}
#包括
#包括
使用名称空间std;
字符串revStr(字符串字){
字符串反转=”;
if(word.size()==0)
{
反向返回;
}
对于(int i=word.length()-1;i>=0;i--){
反向=反向+字[i];
}
反向返回;
}
int main(){
弦纹;
cout strin;
cout:

2) 行为类似于格式化输入函数。在构造和检查sentry对象(可能跳过前导空格)后,首先使用
str.erase()
清除
str
,然后从is中读取字符并将其附加到
str
,就像通过
str.append(1,c)一样
,直到下列条件之一变为真:[……]

std::isspace(c,is.getloc())
对于is中的下一个字符c是真的(此空白字符保留在输入流中)


根据定义,您使用的方法一直读取到一个空白,因此您只能将
Hello
读入
strin
。您应该使用另一种读取方法,如
getline
stringstream
,您需要使用
std::getline
来输入带空格的字符串

为了逆转您的代码> STD::String ,考虑使用<代码> STD::反<代码> > <代码> <代码>,虽然您的算法也是正确的。

代码:

#包括
#包括
#包括
使用名称空间std;
int main()
{
弦纹;

cout请参见,cin会在出现空格或换行符时停止输入。因此,要输入带空格的字符串,必须使用
cin.getline()
,这可以通过使用以下代码段来完成:

string S;
cin.getline(1000,'\n');
这将需要输入,直到换行符进入
字符串S
,然后我们只需要反转字符串,这可以通过两种方式完成

方法1:

使用
头文件中的
std::reverse
。此函数适用于所有容器,并将迭代器作为参数

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    string S;
    getline(cin,S);
    reverse(S.begin(), S.end());
    return 0;
}   

我认为您可以使用
revStr()
进行处理,但您需要获得整行输入,但使用
cin
将空间视为分隔符,因此您只能从
Hello World
中获得
Hello


cin>>strin
替换为
getline(cin,strin)

还有
std::reverse
来自
哪个部分不起作用,输入还是反转?减少问题有助于解决它,这是你应该从中得出的结论。试着写一行
cout>strin;
你应该发现问题:)试着使用
std::getline(std::cin,strin)
而不是
std::cin>>strin
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    string S;
    getline(cin,S);
    reverse(S.begin(), S.end());
    return 0;
}   
#include <bits/stdc++.h>

using namespace std;

string myfunc(string S)
{
    int l = 0;
    int r = S.size()-1; 
    while(l<r)
    {
        swap(S[l],S[r]);
        l++;
        r--;
    }
    return S;
}

int main()
{
    ios_base::sync_with_stdio(false);
    string S;
    getline(cin,S);
    S = myfunc(S);
    cout<<S;
    return 0;
}