【问题标题】:Converting from int to CString从 int 转换为 CString
【发布时间】:2015-05-23 11:13:48
【问题描述】:
TestString::TestString(int num) 

这是一个转换构造函数,应该将整数转换为字符串。

例如,如果传入 123,则 TestString 对象应存储将由 c-string "123" 表示的字符串数据。

class TestString //header file
{
   public:
   TestString (int num);
   //etc.

   private:
   int size;
   char* str;
};

TestString::TestString (int num) //.cpp file 
{
    char c = static_cast<char>(num);

    str = new char[size]; //missing size variable

    int i = 0;

    for (i; cstr[i] != '\0'; i++) //missing cstr array
        str[i] = cstr[i];

    str[i] = cstr[i]; //to tack on null character
}

如您所知,我在定义中缺少大小变量和 cstr 字符串。我不知道我是否将这一切都搞错了,或者只是无法理解我被要求进行什么样的设置......

非常感谢任何指针或建议。

仅允许使用库:

#include <iostream>
#include <iomanip>
#include <cstring>
#include <cctype>

【问题讨论】:

  • 您是否有理由继续使用c 函数而不是使用c++ std::string。还是关于 MS 的CString
  • 我个人更喜欢字符串,但 cstring 是要求之一。

标签: c++ object int c-strings


【解决方案1】:

所以据我了解,您希望获得输出字符串所需的长度。我想没有&lt;cmath&gt; 的唯一方法是使用这样的while循环:

int len=0;
int num2=num;
do{
    num2=num2/10;
    len++;
} while (num2>0);

它基本上一直将数字除以 10 以获得它有多少位数。

然后,对于每个字符,您可以这样做:假设您希望字符为 0,只需使用 '0'。如果您想要 '1' 的字符,请使用 '0'+1,它将返回 1

如果您需要更多帮助(完整实施),请在下方发表评论,我会联系您。玩得开心!

【讨论】:

  • 这还不够线索。在'num2 /= 10'之前你需要buf[len] = '0' + num2 % 10;。结果字符串将向后,必须翻转。
【解决方案2】:

除了纯原版 C++,你不需要任何其他东西,只需使用 std::to_string:

std::string ouputString = std::to_string(inputInteger);

现在您可以使用 std::string::c_str: 提取 C 字符串:

ouputString.c_str()

【讨论】:

    猜你喜欢
    • 2012-09-18
    • 2011-04-22
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多