标签: cstring

写入c-string

我的代码段错误,我不知道为什么.

 1  #include <stdio.h>
 2
 3  void overwrite(char str[], char x) {
 4    int i;
 5    for (i = 0; str[i] != '\0'; i++)
 6      str[i] = x;
 7  }
 8
 9  int main(void) {
10    char *s = "abcde";
11    char x = 'X';
12    overwrite(s, x);
13    printf("%s\n", s);
14    return 0;
15  }
Run Code Online (Sandbox Code Playgroud)

gdb调试器告诉我,问题出在第6行,我想将一个char存储到c-string中(如果我使用左值指针解除引用,那就是同样的问题.)这就是他所说的:

(gdb) run
Starting program: /tmp/x/x 

Breakpoint 1, overwrite (str=0x8048500 "abcde", x=88 'X') at x.c:5
5         for (i = 0; str[i] != '\0'; i++) …
Run Code Online (Sandbox Code Playgroud)

c kr-c c-strings cstring segmentation-fault

3
推荐指数
1
解决办法
1078
查看次数

使用指针简单修改C字符串

我有两个指向同一个C字符串的指针.如果我将第二个指针递增1,并将第二个指针的值赋给第一个指针的值,我希望第一个字符串的第一个字符可以改变.例如:

#include "stdio.h"

int main() {
  char* original_str = "ABC";        // Get pointer to "ABC"
  char* off_by_one = original_str;   // Duplicate pointer to "ABC"
  off_by_one++;                      // Increment duplicate by one: now "BC"
  *original_str = *off_by_one;       // Set 1st char of one to 1st char of other
  printf("%s\n", original_str);      // Prints "ABC" (why not "BBC"?)
  *original_str = *(off_by_one + 1); // Set 1st char of one to 2nd char of other
  printf("%s\n", original_str);      // Prints "ABC" (why not "CBC"?)

  return 0; …
Run Code Online (Sandbox Code Playgroud)

c pointers cstring

3
推荐指数
1
解决办法
3998
查看次数

CString :: Format()可以接收const std :: string吗?

可以的CString ::格式()接受常量的std :: string?

例:

void some_func( const std::string a_string )
{
    CString b_string("World");

    CString c_string;
    c_string.Format("%s %s!", a_string, b_string);

    /* print c_string */
};
Run Code Online (Sandbox Code Playgroud)

c++ const cstring

3
推荐指数
1
解决办法
2207
查看次数

如何在VC6中查看unicode CString的值?

我正在使用Visual Studio 6来调试C++应用程序.编译应用程序以支持unicode字符串.CString类型用于操作字符串.当我使用调试器时,监视窗口将显示字符串的第一个字符,但不会显示完整的字符串.我尝试使用XDebug,但此工具无法正确处理unicode字符串.作为一种解决方法,我可以通过索引到CString维护的私有数组来为字符串的每个字符创建一个自定义监视,但这非常繁琐.

如何在VC6调试器中查看CString的完整unicode值?

c++ debugging visual-c++-6 cstring

3
推荐指数
1
解决办法
2309
查看次数

指针和弦长

我在这里设置一个指针指向一个指针,另一个指向再次命名,但得到了lenth.我怎么用cout << strlen(tail);它一直告诉我lenth是3?即使我输入12的东西?

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

int main()
{
    char name[0];
    cout << "Please enter your name: ";
    cin.getline(name, 256);
    cout << "Your name: " << name << endl;

    char* head = name;
    cout << head[6] << endl;

    char* tail = name;
    cout << strlen(tail);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers cstring

3
推荐指数
2
解决办法
746
查看次数

没有逗号的数组初始化

在下面的代码我输出像(最后一个给出分段错误)

 U   
 s    
 HelloThisisatest    
 Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么.代码是

int main()
{
   char *a[]={"Hello" "This" "is" "a" "test"};
   printf("%c\n",a[1][0]);
   printf("%c\n",a[0][8]);
   printf("%s\n",a[0]);
   printf("%s\n",a[3]);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

另一个问题是我们可以在不使用逗号的情况下初始化二维数组吗?当我用\ns 替换\ts然后输出变化时,我得到的另一种情况

"你的HelloThisisatest(null)"

为什么?

c string pointers cstring

3
推荐指数
1
解决办法
605
查看次数

将CString与sprintf一起使用

我有一些C++代码,我需要在sprintf中使用CString.在这段代码中,我创建的文件名是由sprintf定义的CStrings.代码如下.

double Number;     
Number = 0.25; 

char buffer [50];

CString sFile;
sFile = sprintf(buffer,"TRJFPICD(%3.3f).txt",Number);

CString SFFile;
SFFile = sprintf(buffer,"TRJFPICV(%3.3f).txt",Number);

CString SFFFile;
SFFFile = sprintf(buffer,"TRJFPICA(%3.3f).txt",Number);
Run Code Online (Sandbox Code Playgroud)

所需的文件名是TRJFPICD(0.25).txt, TRJFPICV(0.25).txt,和TRJFPICA(0.25).txt.我必须使用CStrings代码.

我得到的错误是' operator ='含糊不清.

c++ printf cstring

3
推荐指数
1
解决办法
6102
查看次数

C++:如何将ASCII或ANSI转换为UTF8并存储在std :: string中

我公司使用这样的代码:

    std::string(CT2CA(some_CString)).c_str()
Run Code Online (Sandbox Code Playgroud)

我认为它将Unicode字符串(其类型为CString)转换为ANSI编码,此字符串用于电子邮件的主题.但是,电子邮件的标题(包括主题)表示邮件客户端应将其解码为unicode(这是原始代码的作用).因此,一些像"äöü"这样的德国字母将无法正确显示为标题.

无论如何,我可以将此标头放回UTF8并存储到std :: string或const char*?

我知道有很多更聪明的方法可以做到这一点,但我需要保持代码坚持原来的(即将头部发送为std :: string或const char*).

提前致谢.

c++ cstring stdstring visual-studio-2010

3
推荐指数
1
解决办法
1万
查看次数

CMutablePointer <CString>到swift语言的String

我有一个库,它有这样的功能:

int get_user_name(const char **buffer);
Run Code Online (Sandbox Code Playgroud)

在swift中,应该像这样调用:

var name:CMutablePointer<CString> = nil
get_user_name(name)
Run Code Online (Sandbox Code Playgroud)

我想让这个功能更舒服,所以我把它包起来:

func get_username() -> String {
    var name:CMutablePointer<CString> = nil
    get_user_name(name)

    // how to convert name to String
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何将名称转换为String

string cstring swift

3
推荐指数
1
解决办法
2326
查看次数

试图传递CStringArray给出错误无法访问类'CObject'中声明的私有成员

我收到一个奇怪的错误告诉我,当我只是尝试将CS​​tringArray传递给我编写的函数以将其分解为碎片时,我无法访问在类'CObject'中声明的私有成员.我已经注释掉了我的整个函数代码,所以我知道问题存在于对象本身的传递中,我假设我做错了.

这是我的代码:

    // If successful, read file into CStringArray
    CString strLine;
    CStringArray lines;
    while (theFile.ReadString(strLine))
    {
        lines.Add(strLine);
    }

    // Close the file, don't need it anymore
    theFile.Close();

    // Break up the string array and separate it into data
    CStringArrayHandler(lines);
Run Code Online (Sandbox Code Playgroud)

这是我的CStringArrayHandler函数:

void CSDI1View::CStringArrayHandler(CStringArray arr)
{
    // Left out code here since it is not the cause of the problem
}
Run Code Online (Sandbox Code Playgroud)

这是我的头文件中的函数声明:

class CSDI1View : public CView
{
// Operations
public:
    void CStringArrayHandler(CStringArray arr);   // <<<<===================
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误的全文:

错误1错误C2248:'CObject :: CObject':无法访问在类中声明的私有成员>'CObject'c:\ program files(x86)\ …

c++ mfc compiler-errors cstring visual-studio-2013

3
推荐指数
1
解决办法
1157
查看次数