Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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++ 高效存储最多2048个字符的数组?_C++_C_Arrays_String_Memory Management - Fatal编程技术网

C++ 高效存储最多2048个字符的数组?

C++ 高效存储最多2048个字符的数组?,c++,c,arrays,string,memory-management,C++,C,Arrays,String,Memory Management,从另一个来源获取输入;它最多可填充2048个字符的字符串 填充和比较此字符串的最有效方法是什么?-我希望能够很容易地附加到字符串也 以下是我的三次尝试: C型版本 #包括 #包括 内部主(空){ 查富[2048]; foo[0]='a',foo[1]='b',foo[2]='c',foo[3]='\0';//例如:取自u-input 看跌期权(strcmp(foo,“bar”)?“假”:“真”); } C++风格的版本0 #包括 int main(){ std::字符串foo; 粮食储备(20

从另一个来源获取输入;它最多可填充2048个字符的字符串

填充和比较此字符串的最有效方法是什么?-我希望能够很容易地附加到字符串也

以下是我的三次尝试:

C型版本
#包括
#包括
内部主(空){
查富[2048];
foo[0]='a',foo[1]='b',foo[2]='c',foo[3]='\0';//例如:取自u-input
看跌期权(strcmp(foo,“bar”)?“假”:“真”);
}
C++风格的版本0
#包括
int main(){
std::字符串foo;
粮食储备(2048年);
foo+=“abc”;//例如:取自用户输入

std::cout什么是最有效的取决于您优化的对象。
一些共同标准:

  • 程序速度
  • 程序大小
  • 工作集大小
  • 代码大小
  • 程序员时间
  • 安全
  • 毫无疑问,1和2的国王,在你的例子中可能也是3,是C风格。
    对于4和5,C++风格1。 第6点可能是C++风格


    <> P>仍然强调了这些目标的适当组合,这对C++选项0是有利的。

    你理解这两个是如何不同的吗?其中之一可以是代码(<代码>返回<代码> ED,在O(1)中)<代码> STD::String 将数据存储在空闲存储区:数组自动存储。另外,字符串 >全部被处理,并且处理输入量太大而没有定义的行为……如果使用C++,则使用C++。不要试图用C样式语法优化代码思维。“最有效”?第一个版本应该是
    char foo[2049]当输入字符串长2048个字符时,它会导致不明确的行为。使用STD::string,你将不会面对这个问题,这是一个值得争论的问题。写得好的C++肯定和C一样快/小/缓存友好,而且快速计算表明程序员花费了“优化”的时间。(以及后来维护造成的混乱)比任何花费的计算机时间都要昂贵得多,除非是在非常特殊的情况下VoBrad:嗯,在这种情况下它不会,因为C样式代码甚至不使用动态内存。它的优化程度和C++完全一样,而C++代码使用STD::string(和动态分配)。我当然同意5和6应该是大多数时候最关心的问题。虽然不是太多,但是我们会使用脚本语言。C++的美丽(诅咒)是,如果需要,你可以编写C代码。@ VoBrand:因为OP演示了。
    
    #include <cstdio>
    #include <cstring>
    
    int main(void) {
        char foo[2048];
        foo[0]='a', foo[1]='b', foo[2]='c', foo[3]='\0';  // E.g.: taken from u-input
        puts(strcmp(foo, "bar")? "false": "true");
    }
    
    #include <iostream>
    
    int main() {
        std::string foo;
        foo.reserve(2048);
        foo += "abc";  // E.g.: taken from user-input
        std::cout << std::boolalpha << (foo=="bar");
    }
    
    #include <iostream>
    
    int main() {
        std::string foo;
        foo += "abc";  // E.g.: taken from user-input
        std::cout << std::boolalpha << (foo=="bar");
    }