使用 C++ 在运行时使用转义序列

     2023-02-22     210

关键词:

【中文标题】使用 C++ 在运行时使用转义序列【英文标题】:Using escape sequence at runtime with C++ 【发布时间】:2014-11-10 05:24:21 【问题描述】:

我对 C++ 很陌生,我需要从 MSVC++ 文本字段中读取输入并将其写入文件。我需要将\n 作为新行写入文件,而不是\n

经过一番研究,我发现转义字符只在编译时起作用。我可以在运行时使用它吗?我只使用 C++ 来完成这项任务。

【问题讨论】:

在加载文本时只查找该字符序列,并将其替换为换行符。 【参考方案1】:

如果我今天用 C++ 写这个,我可能会写得有点不同(我大约在 20 年前用 C 写过这个),但它至少可以提供一点启发:

/*
** Public Domain by Jerry Coffin.
**
** Interprets a string in a manner similar to that the compiler
** does string literals in a program.  All escape sequences are
** longer than their translated equivalant, so the string is
** translated in place and either remains the same length or
** becomes shorter.
*/

#include <string.h>
#include <stdio.h>
#include "snip_str.h"

char *translate(char *string)

      char *here=string;
      size_t len=strlen(string);
      int num;
      int numlen;

      while (NULL!=(here=strchr(here,'\\')))
      
            numlen=1;
            switch (here[1])
            
            case '\\':
                  break;

            case 'r':
                  *here = '\r';
                  break;

            case 'n':
                  *here = '\n';
                  break;

            case 't':
                  *here = '\t';
                  break;

            case 'v':
                  *here = '\v';
                  break;

            case 'a':
                  *here = '\a';
                  break;

            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
                  numlen = sscanf(here,"%o",&num);
                  *here = (char)num;
                  break;

            case 'x':
                  numlen = sscanf(here,"%x",&num);
                  *here = (char) num;
                  break;
            
            num = here - string + numlen;
            here++;
            memmove(here,here+numlen,len-num );
      
      return string;

【讨论】:

使用 C++ 在运行时生成声音

】使用C++在运行时生成声音【英文标题】:GeneratingSoundsatRuntimewithC++【发布时间】:2012-07-2621:15:21【问题描述】:所以我在长时间的中断后开始使用C++,我想创建一个程序,它可以在运行时根据数字字符串生成音乐(受到某些人... 查看详情

模板字符串中不允许使用八进制转义序列

】模板字符串中不允许使用八进制转义序列【英文标题】:Octalescapesequencesarenotallowedintemplatestrings【发布时间】:2019-09-2602:50:00【问题描述】:我正在使用electron和vue构建一个桌面应用程序,在开发模式下运行该应用程序并通过... 查看详情

如何使用 C++ 在运行时获取内存使用情况?

】如何使用C++在运行时获取内存使用情况?【英文标题】:HowtogetmemoryusageatruntimeusingC++?【发布时间】:2010-10-1417:49:02【问题描述】:我需要在我的程序运行时获取内存使用VIRT和RES并显示它们。到目前为止我尝试了什么:getrusage(... 查看详情

如何使用 C++ 在运行时获取内存使用情况?

】如何使用C++在运行时获取内存使用情况?【英文标题】:HowtogetmemoryusageatruntimeusingC++?【发布时间】:2010-10-1417:49:02【问题描述】:我需要在我的程序运行时获取内存使用VIRT和RES并显示它们。到目前为止我尝试了什么:getrusage(... 查看详情

在运行时 C++ 中使用派生类

】在运行时C++中使用派生类【英文标题】:usingderivedclassinruntimec++【发布时间】:2015-04-2600:44:18【问题描述】:如果mybase类是派生类,这是在运行时检查。我需要在运行时使用myBase(如myBase.member1)从myDerived.member1调用成员变量。... 查看详情

在 C++ 程序上使用加载时或运行时动态链接时,如何在编译时解析引用?

】在C++程序上使用加载时或运行时动态链接时,如何在编译时解析引用?【英文标题】:Howreferencesareresolvedatcompiletimewhenusingload-timeorrun-timedynamiclinkingonC++programs?【发布时间】:2021-01-1522:45:58【问题描述】:我想我的问题很简单,... 查看详情

如何在 C++ 中使用 iprintf

】如何在C++中使用iprintf【英文标题】:Howtouseiprintfinc++【发布时间】:2013-03-1312:18:02【问题描述】:我怎样才能真正使用任何命令(在使用DevkitProforNDS的c++编程中)简单地将变量而不是文本打印到特定位置?这是我打印文本的内... 查看详情

在 OpenCV (C++) 中使用 calcHist 的运行时错误

】在OpenCV(C++)中使用calcHist的运行时错误【英文标题】:RuntimeerrorusingcalcHistinOpenCV(C++)【发布时间】:2014-03-2101:38:58【问题描述】:这里有很多关于OpenCV中的calcHist的问题,但我找不到我的问题的答案,并且已经阅读了好几次文档... 查看详情

使用 Gcc 在运行时导入 C++ 成员函数

】使用Gcc在运行时导入C++成员函数【英文标题】:ImportC++memberfunctionatrun-timewithGcc【发布时间】:2015-10-0310:40:57【问题描述】:问题我目前正在开发一个插件库,其中应该不仅可以导入C-Linkage符号,还可以导入所有导入的东西。... 查看详情

如何在 C++ 和 Qt 中使用在运行时加载的库

】如何在C++和Qt中使用在运行时加载的库【英文标题】:HowtousealibraryloadedatruntimeinC++andQt【发布时间】:2015-05-2022:50:19【问题描述】:我目前有一个在桌面和手机上运行的应用程序。桌面版需要功能齐全的libfoo.so,而移动版只需... 查看详情

C++ - 转义逗号

...我有一个CSV文件。例如,字段1,字段2,字段3,字段4我正在使用getline和\',\'作为分隔符来解析文件。问题是当其中一个字段本身包含“,”时,解析会导致不正确的结果。所以,我想在编写CSV文件时转义任何字段中存在的“,”。... 查看详情

在运行时解密函数并使用它 QT c++

】在运行时解密函数并使用它QTc++【英文标题】:decryptfunctionatruntimeanduseitQTc++【发布时间】:2017-09-0612:54:04【问题描述】:我是QT新手,我正在尝试创建一个加密函数。总体而言,您在C/C++中所做的是:将指针指向函数将功能页... 查看详情

无法在 C# 中使用 Regex.Unescape 删除转义序列

】无法在C#中使用Regex.Unescape删除转义序列【英文标题】:UnabletoremoveEscapesequencesusingRegex.UnescapeinC#【发布时间】:2021-10-1922:53:51【问题描述】:我想从PokemonAPI获得的以下字符串中删除所有转义序列。“一粒奇怪的种子\\n在出生时... 查看详情

在运行时创建事件处理程序而不使用 WndProc win32 c++

】在运行时创建事件处理程序而不使用WndProcwin32c++【英文标题】:CreateeventhandleratruntimewithoutusingWndProcwin32c++【发布时间】:2021-01-0505:10:22【问题描述】:在使用C#时,之前很容易在运行时创建事件处理程序,例如:Buttonbutton1=newbu... 查看详情

csharp打印时使用转义序列,字符串文字和逐字符串的示例。(代码片段)

查看详情

csharp打印时使用转义序列,字符串文字和逐字符串的示例。(代码片段)

查看详情

swift无法使用转义序列解码字符串

】swift无法使用转义序列解码字符串【英文标题】:swiftcan\'tdecodestringwithescapesequence【发布时间】:2021-02-1806:28:31【问题描述】:我有格式为SO\\/ME\\/STR\\/ING的字符串。我想要模拟json进行测试。当我使用以下格式创建json时:letjson=... 查看详情

如何在 ZSH 提示中为真彩色或粗体使用转义序列?

】如何在ZSH提示中为真彩色或粗体使用转义序列?【英文标题】:HowtouseescapesequencesinaZSHpromptfortruecolororbold?【发布时间】:2017-06-0601:21:08【问题描述】:我正在自定义我的ZSH提示,但似乎无法使用转义序列告诉Konsole使用粗体文... 查看详情