标题:求高手赐教
只看楼主
mumu359
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-7
 问题点数:0 回复次数:9 
求高手赐教
看c++ primer 第4版 上的附带的一段代码 为什么这段代码无法通过编译 我用 Visual C++ 6.0 编译器
#include <string>
#include <iostream>
using std::cout; using std::endl;
using std::string;
char *cp = "Hiya";             // null-terminated array
char c_array[] = "World!!!!";  //null-terminated
char no_null[] = {'H', 'i'};  // not null-terminated

string s1(cp);             // s1 == "Hiya"
string s2(c_array, 5);     // s2 == "World"
string s3(c_array + 5, 4); // s3 == "!!!!"
string s4(no_null);        // runtime error: no_null not null-terminated
string s5(no_null, 2);     // ok: s5 == "Hi"

    string s6(s1, 2);    // s6 == "ya"

    string s7(s1, 0, 2); // s7 == "Hi"

    string s8(s1, 0, 8); // s8 == "Hiya"

int main()
{
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s5 << '\n'
         << s6 << '\n' << s7 << endl;

{
    string s1;           // s1 is the empty string
    string s2(5, 'a');   // s2 == "aaaaa"
    string s3(s2);       // s3 is a copy of s2
    string s4(s3.begin(),
              s3.begin() + s3.size() / 2);  // s4 == "aa"
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s4 << endl;
}

return 0;
}
搜索更多相关主题的帖子: string array std 
2008-03-03 19:30
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include <string>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
char *cp = "Hiya";             // null-terminated array
char c_array[] = "World!!!!";  //null-terminated
char no_null[] = {'H', 'i'};  // not null-terminated

string s1(cp);             // s1 == "Hiya"
string s2(c_array, 5);     // s2 == "World"
string s3(c_array + 5, 4); // s3 == "!!!!"
string s4(no_null);        // runtime error: no_null not null-terminated
string s5(no_null, 2);   // ok: s5 == "Hi"
string s6(s1, 2,3);    // s6 == "ya"
string s7(s1, 0, 2); // s7 == "Hi"
string s8(s1, 0, 8); // s8 == "Hiya"

int main()
{
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s5 << '\n'
         << s6 << '\n' << s7 << endl;

{
    string s1;           // s1 is the empty string
    string s2(5, 'a');   // s2 == "aaaaa"
    string s3(s2);       // s3 is a copy of s2
    string s4(s3.begin(),
              s3.begin() + s3.size() / 2);  // s4 == "aa"
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s4 << endl;
}

return 0;
}

学习需要安静。。海盗要重新来过。。
2008-03-03 19:43
eagleboycn
Rank: 1
等 级:新手上路
帖 子:191
专家分:0
注 册:2007-9-26
得分:0 
cstring?

兵法的精要在于韬晦自己
2008-03-04 07:41
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
得分:0 
貌似是个经典的问题,这样试一下应该可以了:
<code>
#include <string>
#include <iostream>

using namespace std;    //注意把原来的using声明去掉,加上这个

char *cp = "Hiya";             // null-terminated array
char c_array[] = "World!!!!";  //null-terminated
char no_null[] = {'H', 'i'};  // not null-terminated

string s1(cp);             // s1 == "Hiya"
string s2(c_array, 5);     // s2 == "World"
string s3(c_array + 5, 4); // s3 == "!!!!"
string s4(no_null);        // runtime error: no_null not null-terminated
string s5(no_null, 2);     // ok: s5 == "Hi"
string s6(s1, 2);    // s6 == "ya"
string s7(s1, 0, 2); // s7 == "Hi"
string s8(s1, 0, 8); // s8 == "Hiya"

int main()
{
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s5 << '\n'
         << s6 << '\n' << s7 << endl;

    string s1;           // s1 is the empty string
    string s2(5, 'a');   // s2 == "aaaaa"
    string s3(s2);       // s3 is a copy of s2
    string s4(s3.begin(),
              s3.begin() + s3.size() / 2);  // s4 == "aa"
    cout << s1 << '\n' << s2 << '\n'
         << s3 << '\n' << s4 << endl;

    return 0;
}
</code>

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-03-04 12:48
tymstill
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2008-1-28
得分:0 
建议你不要用Visual C++ 6.0 ,初学者用Dev-C++把
2008-03-04 16:16
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
用VS2005吧

可惜不是你,陪我到最后
2008-03-04 18:00
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
得分:0 
回复 1# 的帖子
换了IDE,就重新编译一下,调试吗!
2008-03-04 18:03
mumu359
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-7
得分:0 
回复 2# 的帖子
好像书中这个程序的用途是使用 string 类的构造函数 string s(s2,pos2) pos2是string s2 的下标 不知道为什么就是不能通过编译
2008-03-05 17:26
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
你看看string的构造函数有没有这个...我没用过这样的构造函数......
basic_string(const A& al = A());
    basic_string(const basic_string& rhs);
    basic_string(const basic_string& rhs, size_type pos, size_type n,
        const A& al = A());
    basic_string(const E *s, size_type n, const A& al = A());
    basic_string(const E *s, const A& al = A());
    basic_string(size_type n, E c, const A& al = A());
    basic_string(const_iterator first, const_iterator last,
        const A& al = A());

学习需要安静。。海盗要重新来过。。
2008-03-05 19:12
mumu359
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-7
得分:0 
回复 9# 的帖子
多谢了
2008-03-13 17:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-201784-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.150123 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved