首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,怎么一次性往字符串中加入大量的"空格"内容

2014-01-17 
各位高手,如何一次性往字符串中加入大量的空格内容?题目是这样:请在abc和def这两个字符串中间加入任

各位高手,如何一次性往字符串中加入大量的"空格"内容?
题目是这样:请在"abc"和"def"这两个字符串中间加入任意个空格,组成一个字符串"abc      def"(中间的空格数不是个固定值,可以随意改动,比如这次中间有1000个空格,下次变为有4000个空格)
我可以用while或for循环来往字符串中一次添加一个空格,但这样效率低下。
我尝试一次性添加一堆空格内容的方法:用char数组,里面存的都是空格,但后来发现这根本行不通,数组就是以空格/0结尾的,这数组跟别的字符串进行加运算,根本没戏。
字符串是char*还是string还是MFC的CString都无所谓,只要能实现我所说的"一次性加入大量空格"功能即可,谢谢各位!
[解决办法]

引用:
Quote: 引用:

查memcpy函数。
或者你自己写个内存对齐的版本,把8个空格对应的64位整数算出来,然后每个循环内存对齐地赋8个字节,不在内存对齐位置的头和尾巴单独处理。


8个空格对应的64位整数就是0啊,多少个空格,值都是0啊,因为字符'\0'(也就是空格)的值就是0啊。你的意思是把0赋给谁呢,赋给一个我动态开辟的用于存储空格的char数组么?前面说了,char数组里赋多少个空格,都没戏。动态开辟数组只能是:  char* aa = new char[];  char*以空格为结束符,没戏。

memset和memcpy都是给一段内存赋值,你希望我怎么运用memcpy呢?你你希望把谁的值复制给谁呢?我最终是要得到一个字符串,这个字符串的形式是:一段字符串+一堆空格+一段字符串。--连接起来形成的一个长字符串。

谁告诉你空格是0的?空格是32。
[解决办法]
引用:
Quote: 引用:

用memset 函数,将一段内存赋值空格。


已这么做,看5楼代码。
问题是,有没有其他途径。正好了解一下。

LZ要求真高

#include <iostream>
#include <string>

int main()
{
    std::string a("abc"), b("def");
    std::string c = a + std::string(3, ' ') + b;
    std::cout << c << std::endl;
    return 0;
}

结果
abc   def
[解决办法]
你不知道有个容器叫string吗?

    std::string str;
    std::string str1 = "abc";
    std::string str2 = "123";
    str.assign(10, ' ');//10你可以任意指定大小。
    std::string strall = str1 + str + str2;

[解决办法]
没有那么 复杂吧 

char buff = new[1024*1024];
memset(buff,' ',1024*1024);

只有你想 空多少就空 多少, 比如你 想 空 1000个 ;

memcpy(buff,"abc",3);


memcpy(buff+3+1024,"abc",3);

这样 你就直接一下子 空了 1000个空格,用while循环 太 奢侈了,没必要,简单的问题简单解决。

热点排行