c++ - 打印给定字符串的 50% 或一半

标签 c++ string c-strings

假设我给了一个字符串并且需要以相反的顺序打印准确的第一半或 50% 的字符串。

我试图设置 strlen(s)=n/2 但要求: 错误:需要左值作为赋值的左操作数|。

#include<bits/stdc++.h>
using namespace std;

int t,i,j;

char s[101],b[101];

int main()
{   
    cin>>t;
    for(i=0;i<t;i++)
    {
        cin>>s;
        int n=strlen(s)-1;
        for(i=n,j=0;i>=0;i--,j++)
           b[j]=s[i];
        strlen(b)=n/2;
        cout<<b<<"\n";
    }
}

应该以相反的顺序打印出字符串的第一半

最佳答案

使用 std::stringstd::reverse_iterator,你可以这样做

std::string get_1st_half_rev(const std::string& s)
{
    return {std::rbegin(s),
            std::rbegin(s) + (s.size() + 1) / 2};
}

Demo

关于c++ - 打印给定字符串的 50% 或一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58594818/

相关文章:

C++ 需要将一个字符串与 200.000 个单词进行比较

string - 如何从 Golang Strings.Builder 对象中修剪最后一个字符?

c - 如何删除C语言中字符串(字符数组)中的所有数据?

C语言中计算某个字符在字符串中出现的次数?

c - 我遇到了 "Buffer overflow-array index out of bounds"错误

c++ - 关于 Boost::Spirit 自动规则行为的困惑

c++ - 发布由指针管理的列表的添加和打印元素

javascript - JQuery 字符串包含检查

C++素数没有给出正确答案

c++ - 传递 const char* 作为模板参数